#!/bin/bash


usage(){
    echo "使用说明："
    echo "将脚本分别上传到分支和总部"
    echo "添加可执行权限  chmod +x sangforvpn.sh"
    echo "./sangforvpn.sh n 1/0"
    echo "n为配置隧道个数 1为总部 0为分支"
    exit 1
}
config(){
         
    alive_sec=120                          #隧道保持时间
    our_said=10000                         #分支隧道id，递增方式
    peer_said=50000                        #总部隧道id，递增方式
    local_addr="22.23.25.109"              #分支wan口ip
    peer_addr="22.23.25.110"               #总部wan口ip 
    mask=16                                #wan口掩码   
    peer_port=4009                         #总部服务器端口
    local_port=12123                       #分支起始端口                              
    subnets="20.20.20.1"                   #分支配置总部内网ip，递增方式  
    zbnets="40.40.40.1"                    #总部配置分支内网ip，递增方式
    network=32                             #总部和分支配置隧道对应的内网掩码
    pc_numble=1                            #隧道对应的内网个数 
    fenzhi_interface="eth2"                #分支wan口ip
    zongbu_interface="eth2"                #总部wan口ip
}
check_parameters(){
    #if [[ $# -lt 1 ]];then
    #     echo "请输入参数"
     #    usage
    #fi
    echo "检查参数"
    while getopts "f:z:n:h:" OPT; do
    case $OPT in
        f) 
           fenzhi_dmz="$OPTARG" 
           echo $fenzhi_dmz ;;
        z) zongbu_dmz="$OPTARG"
    echo "zongbu_dmz== $zongbu_dmz" ;;
        n) numble=$OPTARG ;;
        h) usage;;
        s) s=$OPTARG;;
    esac
    done
}

sangforvpn_fenzhi(){
    #配置分支隧道
    ip add add dev $fenzhi_interface $local_addr/$mask
    echo  \{\"ignore_line_addr\":1,\"alive_sec\":$alive_sec,\"our_said\":${our_said},\"peer_said\":${peer_said},\"local_addr\":\"${local_addr}\",\"peer_addr\":\"$peer_addr\",\"peer_port\":$peer_port,\"local_port\":$local_port,\"server\":0,\"subnets\":[\"$subnets/$network\"]} >fenzhi.json
    dp-debug addtun -f fenzhi.json

}
sangforvpn_zongbu(){
    #配置总部隧道
    ip add add dev $zongbu_interface $peer_addr/$mask    
    echo \{\"ignore_line_addr\":1,\"alive_sec\":$alive_sec,\"our_said\":${peer_said},\"peer_said\":${our_said},\"local_addr\":\"${peer_addr}\",\"peer_addr\":\"$local_addr\",\"peer_port\":$local_port,\"local_port\":$peer_port,\"server\":1,\"subnets\":[\"$subnets/$network\"]\} >zongbu.json
    dp-debug addtun -f zongbu.json
}
generate(){
    #用来生成递增ip
    local ip=$1
    local m=$2                    #递增ip的个数，如为1时每次加1  3时每次加3
    one_ip=`echo $ip|awk -F "." '{print $1}'`
    two_ip=`echo $ip|awk -F "." '{print $2}'`
    three_ip=`echo $ip|awk -F "." '{print $3}'`
    last_ip=`echo $ip|awk -F "." '{print $4}'`
    last_ip=`expr $last_ip + $n`
    if [ $last_ip -gt 255 ]             #判断ip不超过255
    then
         three_ip=`expr $three_ip + 1`
         last_ip=1
         if [ $three_ip -gt 255 ]
         then
              two_ip=`expr $two_ip + 1`
              three_ip=1
              if [ $two_ip -gt 255 ]
              then
                  one_ip=`expr $one_ip + 1`
                  two_ip=1
              fi
          fi
    fi	
    add_addr=`echo $one_ip.$two_ip.$three_ip.$last_ip`   #需要递增的ip,可通过$add_addr赋值
        
}

main(){
     config                                 #执行配置文件
     check_parameters
     i=0
     echo "$numble"
     echo "$fenzhi_dmz"
     echo "开始配置sangforvpn"
     while [ $i -lt $numble ]
     do  
          if [ $s == 0 ] 
          then
              sangforvpn_fenzhi
          elif [ $s == 1 ]
          then
              sangforvpn_zongbu
          else
              echo "<error>参数错误"
              echo " 请说明配置总部还是分支"
              exit 0
          fi
          generate "$peer_addr" 1             
          peer_addr=$add_addr                #peer_addr递增
          generate "$local_addr" 1
          local_addr=$add_addr
          generate "$subnets" $pc_numble     #分支配置总部子网递增 
          subnets=$add_addr
          generate "$zbnets" $pc_numble
          zbnets=$add_addr 
          peer_said=`expr $peer_said + 1`
          our_said=`expr $our_said + 1`
          i=`expr $i + 1`
          echo "配置第${i}条隧道完成"
     done
     echo “sangfor vpn配置完成”
}

main $@

